const audio = {
  state:{
    audioElement:'', // audio元素 储存起来
    info:{  //audio 信息
      id: 0,  //歌曲Id
      name: '', //歌曲名称
      singer: '', //歌手
      url: '',  //歌曲url
      img_url: '', //图片url
      type: '', // 歌曲分类
      lyric: '' //歌词
    },
    // 是否正在播放
    playing: false,
    // 是否正在加载
    waiting: false,
    // 是否显示audio的列表
    showMusicDetail: false,
    // 是否显示歌单列表
    showSongSheet: false,
    // 当前音乐的index索引
    currentIndex: 0,
    // 歌词信息 索引
    lyricIndex: -1,
    // 全部音乐信息  包括歌单等等
    musicAllList: [],
    // 音乐播放信息
    musicList: [],
    // 音乐歌单信息
    musicSheetList: [],
    // 正在播放的音乐歌单类型，到时候区分正在播放的歌曲是存在于哪一个歌单的    默认为-1 表示所有
    musicSheetType: '-1',
    // 图片获取颜色
    songSheetImageColor: '#333',
    // 播放类型   1是自动播放  2是循环播放  3是随机播放
    playType: 1,
    // 当前播放的时间
    currentTime: 0,
    // 音乐的播放时长
    musicDuration: 0,
    // 音乐是否在加载
    musicLoadStart: false
  },
  mutations:{
    setAudioElement(state,ele){  // 设置audioElement元素
      state.audioElement = ele
    },
    // 当前播放的歌曲信息
    setInfo(state,obj){
      state.info = obj;
    },
    // 开始播放
    setPlaying(state){
      state.playing = true;
      state.audioElement.play();
    },
    //暂停
    setpause(state){
      state.playing = false;
      state.audioElement.pause();
    },
    //开始/暂停
    setPlayStatus(state){
      if(state.playing){
        state.playing = false;
        state.audioElement.pause();
      }else{
        state.playing = true;
        state.audioElement.play();
      }
    },
    //是否在缓冲等待
    setWaiting(state){
      state.waiting = !state.waiting;
    },
    //是否显示 Audio的列表
    setShowMusicDetail(state){
      state.showMusicDetail = !state.showMusicDetail;
    },
    //是否显示歌单列表
    setShowSongSheet(state){
      state.showSongSheet = !state.showSongSheet;
    },
    // 设置歌词 当前播放的索引
    setLyricIndex (state, obj) {
      state.lyricIndex = obj.index
    },
    // 插入所有音乐信息
    setMusicAllList (state, obj) {
      state.musicAllList = obj
      state.musicList = obj.all
    },
    // 设置音乐播放器的歌单列表数据
    setMusicSheetList (state, obj) {
      state.musicSheetList = obj.data
    },
    // 设置音乐歌单类型
    setMusiSheetType (state, obj) {
      state.musicSheetType = obj.sheettype
    },
    //设置图片颜色
    setSongSheetImageColor (state, obj) {
      state.songSheetImageColor = obj.color
    },
    setPlayType (state) {
      if (state.playType === 3) {
        state.playType = 1
      } else {
        state.playType++
      }
    },
    // 当前歌曲播放时间
    setCurrentTime (state, obj) {
      state.currentTime = obj.time
    },
    // 歌曲时长
    setMusicDuration (state, obj) {
      state.musicDuration = obj.duration
    },
    // 设置音乐是否正在加载
    setMusicLoadStart (state, obj) {
      state.musicLoadStart = obj.isloadstart
    },
    // 插入播放列表信息
    setMusicList (state, obj) {
      state.musicList = obj.list
    },

  },
  actions:{
    set_AudioElement({commit},ele){  //action方式设置audioElement元素
      commit('setAudioElement',ele)
    },
    set_MusicDetail ({commit}, obj) {
      commit('setMusicDetail', obj)
    },
    set_MusicAllList ({commit}, obj) {
      commit('setMusicAllList', obj)
    },
    set_MusicList ({commit}, obj) {
      commit('setMusicList', obj)
    },
    set_PlayType ({commit}) {
      commit('setPlayType')
    },
    set_CurrentTime ({commit}, obj) {
      commit('setCurrentTime', obj)
    },
    set_MusicDuration ({commit}, obj) {
      commit('setMusicDuration', obj)
    },
    set_MusicSheetList ({commit}, obj) {
      commit('setMusicSheetList', obj)
    },
    set_SongSheetImageColor ({commit}, obj) {
      commit('setSongSheetImageColor', obj)
    },
    play_Next ({commit}) {
      commit('playNext')
    },
    play_Prev ({commit}) {
      commit('playPrev')
    },
    play_Index ({commit}, obj) {
      commit('playIndex', obj)
    },
    play_Ended ({commit}) {
      commit('playEnded')
    }
  },



  getters: {
    getPlaying(state) {  //这里的state对应着上面这个state
      return state.playing;
    },
    getInfo(state){
      return state.info;
    }
  },

}

export default audio;
